#ifndef TCPSERVER_H
#define TCPSERVER_H

#include <QObject>
#include <QTcpServer>
#include <QTcpSocket>
#include <QList>

class TcpServer : public QObject
{
    Q_OBJECT
public:
    explicit TcpServer(QObject *parent = nullptr);
    ~TcpServer();

    // 启动服务器，返回是否启动成功
    bool startServer(quint16 port);

signals:
    // 收到客户端数据时触发的信号（携带客户端地址和数据）
    void signalNewData(const QString &clientAddr, const QByteArray &data);
    // 客户端连接/断开时触发的信号
    void signalClientStatus(const QString &clientAddr, bool isConnected);

private slots:
    // 新客户端连接时的槽函数
    void slotNewConnection();
    // 读取客户端数据的槽函数
    void slotReadyRead();
    // 客户端断开连接的槽函数
    void slotDisconnected();

private:
    QTcpServer *m_server;            // TCP 服务器核心对象
    QList<QTcpSocket *> m_clientSockets; // 已连接的客户端套接字列表
};

#endif // TCPSERVER_H
